var zxlib = {
    fget:function (url,data,success,error) {
        $.get(url,data,function (data,status,xhr) {
            if(status === 200){
                success(data);
            }else {
                console.log(xhr);
                error(data);
            }
        });
    },
    fpost:function (url,data,success,error) {
        console.log(data);
        $.post(url,data,function (data,status,xhr) {
            if(status === "success"){
                success(JSON.parse(data));
            }else {
                console.log(xhr);
                error(data);
            }
        });
    },
    datatable:function (tableId,uniqueId,dataUrl,columns,showDetail,detailUniId,detailDataUrl,detailColumns) {
        showDetail = showDetail||false;

        var oTableInit = new Object();

        oTableInit.init = function () {
            $('#' + tableId).bootstrapTable({
                processing: true,
                url: dataUrl,                      //请求后台的URL（*）
                method: 'post',                      //请求方式（*）
                toolbar: '#toolbar',                //工具按钮用哪个容器
                striped: true,                      //是否显示行间隔色
                cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                pagination: true,                   //是否显示分页（*）
                sortable: false,                     //是否启用排序
                sortOrder: "asc",                   //排序方式
                queryParams: oTableInit.queryParams,//传递参数（*）
                sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
                pageNumber: 1,                       //初始化加载第一页，默认第一页
                pageSize: 10,                       //每页的记录行数（*）
                pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
                search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
                strictSearch: true,
                showColumns: true,                  //是否显示所有的列
                showRefresh: true,                  //是否显示刷新按钮
                minimumCountColumns: 2,             //最少允许的列数
                clickToSelect: true,                //是否启用点击选中行
//                height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
                uniqueId: uniqueId,                     //每一行的唯一标识，一般为主键列
                showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
                cardView: false,                    //是否显示详细视图
                detailView: showDetail,                   //是否显示父子表
                columns: columns,
                //注册加载子表的事件。注意下这里的三个参数！
                onExpandRow: function (index, row, $detail) {
                    oTableInit.InitSubTable(index, row, $detail);
                }
            });
        };

        //得到查询的参数
        oTableInit.queryParams = function (params) {
            var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
                limit: params.limit,   //页面大小
                offset: params.offset
            };
            return temp;
        };

        oTableInit.InitSubTable = function (index, row, $detail) {
            var id = row[uniqueId];
            var cur_table = $detail.html('<table></table>').find('table');
            $(cur_table).bootstrapTable({
                url: detailDataUrl,
                method: "post",
                sidePagination: "server",
                queryParams: { id: id },
                ajaxOptions: { id: id },
                clickToSelect: true,
                detailView: false,//父子表
                uniqueId: detailUniId,
                pageSize: 10,
                pageList: [10, 25],
                columns:detailColumns

            });
        };

        return oTableInit;
    },
    upload:function (inputId,uploadNum,success,error) {
        $('#'+inputId).fileinput({//初始化上传文件框
            showUpload : false,
            showRemove : false,
            uploadAsync: true,
            uploadLabel: "上传",//设置上传按钮的汉字
            uploadClass: "btn btn-primary",//设置上传按钮样式
            showCaption: false,//是否显示标题
            language: "zh",//配置语言
            uploadUrl: "/manager/util/fileUpload",
            maxFileSize : 400,
            maxFileCount: uploadNum,/*允许最大上传数，可以多个，当前设置单个*/
            enctype: 'multipart/form-data',
            //allowedPreviewTypes : [ 'image' ], //allowedFileTypes: ['image', 'video', 'flash'],
            allowedFileExtensions : ["jpg", "png","gif","jpeg"],/*上传文件格式*/
            msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}！",
            dropZoneTitle: "请通过拖拽图片文件放到这里",
            dropZoneClickTitle: "或者点击此区域添加图片",
            //uploadExtraData: {"id": id},//这个是外带数据
            showBrowse: false,
            browseOnZoneClick: true,
            slugCallback : function(filename) {
                return filename.replace('(', '_').replace(']', '_');
            }
        }).on("filebatchselected", function(event, files) {
            $(this).fileinput("upload");
        }).on("fileuploaded", success).on("fileerror",error);
    },
    richText:function (summerId,placeholder,success,error) {
        $('#'+summerId).summernote({
            lang: 'zh-CN',
            minHeight: 400,
            placeholder: placeholder,
            toolbar: [
                // [groupName, [list of button]]
                ['style', ['bold', 'italic', 'underline', 'clear']],
                ['font', ['strikethrough', 'superscript', 'subscript']],
                ['fontsize', ['fontname', 'fontsize', 'color']],
                ['para', ['ul', 'ol', 'paragraph', 'height']],
                ['insert', ['table', 'link', 'picture', 'video']],
                ['help', ['help']]
            ],
            dialogsFade : true,// Add fade effect on dialogs
            dialogsInBody : true,// Dialogs can be placed in body, not in summernote.
            disableDragAndDrop : false,// default false You can disable drag and drop
            callbacks: {
                onImageUpload: function (files) {
                    var imageData = new FormData();
                    imageData.append("imageData", files[0]);
                    $.ajax({
                        data: imageData,
                        type: "POST",
                        url: "/manager/util/fileUpload",
                        cache: false,
                        contentType: false,
                        processData: false,
                        success: function (result) {
                            if (result.code = "0") {
                                var imgNode = document.createElement("img");
                                //读取后台返回的图片url
                                imgNode.src = result.imageUrl;
                                $('#summernote').summernote('insertNode', imgNode);
                                success(result);
                            }else {
                                error(result);
                            }
                        },
                        error: function () {

                        }
                    });
                }
            }
        });
    },
    showAlert:function (type,msg,showTime,cb) {
        showTime = showTime || 1000;
        $('#'+type).find('.alert-text').text(msg);
        $('#'+type).fadeIn(300,function () {
            setTimeout(function () {
                $('#'+type).fadeOut(300,function () {
                    $('#'+type).find('.alert-text').text('');
                    cb && cb();
                });
            },showTime);
        });
    },
    showModel:function (title,context,cb) {
        $('.modal-title').text(title);
        $('#context').text(context);
        $('#myModal').modal('show');
        $('#submit').click(cb);
    },
    closeModel:function () {
        $('#myModal').modal('hide');
    }
}

var HtmlUtil = {
    /*1.用浏览器内部转换器实现html转码*/
    htmlEncode:function (html){
        //1.首先动态创建一个容器标签元素，如DIV
        var temp = document.createElement ("div");
        //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐，google支持)
        (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);
        //3.最后返回这个元素的innerHTML，即得到经过HTML编码转换的字符串了
        var output = temp.innerHTML;
        temp = null;
        return output;
    },
    /*2.用浏览器内部转换器实现html解码*/
    htmlDecode:function (text){
        //1.首先动态创建一个容器标签元素，如DIV
        var temp = document.createElement("div");
        //2.然后将要转换的字符串设置为这个元素的innerHTML(ie，火狐，google都支持)
        temp.innerHTML = text;
        //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐，google支持)，即得到经过HTML解码的字符串了。
        var output = temp.innerText || temp.textContent;
        temp = null;
        return output;
    },
    /*3.用正则表达式实现html转码*/
    htmlEncodeByRegExp:function (str){
        var s = "";
        if(str.length == 0) return "";
        s = str.replace(/&/g,"&amp;");
        s = s.replace(/</g,"&lt;");
        s = s.replace(/>/g,"&gt;");
        s = s.replace(/ /g,"&nbsp;");
        s = s.replace(/\'/g,"&#39;");
        s = s.replace(/\"/g,"&quot;");
        return s;
    },
    /*4.用正则表达式实现html解码*/
    htmlDecodeByRegExp:function (str){
        var s = "";
        if(str.length == 0) return "";
        s = str.replace(/&amp;/g,"&");
        s = s.replace(/&lt;/g,"<");
        s = s.replace(/&gt;/g,">");
        s = s.replace(/&nbsp;/g," ");
        s = s.replace(/&#39;/g,"\'");
        s = s.replace(/&quot;/g,"\"");
        return s;
    }
};